package com.cskaoyan.controller.config;

import com.cskaoyan.model.vo.BaseRespVo;
import com.cskaoyan.model.vo.config.ExpressConfigVO;
import com.cskaoyan.model.vo.config.MallConfigVO;
import com.cskaoyan.model.vo.config.OrderConfigVO;
import com.cskaoyan.model.vo.config.WxConfigVO;
import com.cskaoyan.service.config.SystemConfigService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @program: project-market
 * @description: 配置管理
 * @author: shiyue
 * @create: 2021/11/30 10:45
 **/

@RestController
@RequestMapping("admin/config")
public class SystemConfigController {

    @Autowired
    SystemConfigService systemConfigService;

    @RequiresPermissions("admin:config:mall:list")
    @RequestMapping("mall")
    public BaseRespVo getMallConfig(){
        MallConfigVO configVO=systemConfigService.getMallConfig();
        return BaseRespVo.ok(configVO);
    }

    @RequiresPermissions("admin:config:wx:updateConfigs")
    @PostMapping("mall")
    public BaseRespVo updateMallConfig(@RequestBody MallConfigVO mallConfigVO){

        int result=systemConfigService.updateMallConfig(mallConfigVO);
        return BaseRespVo.ok();
    }

    @RequiresPermissions("admin:config:express:list")
    @RequestMapping("express")
    public BaseRespVo getExpressConfig(){

        ExpressConfigVO configVO=systemConfigService.getExpressConfig();
        return BaseRespVo.ok(configVO);
    }

    @RequiresPermissions("admin:config:express:updateConfigs")
    @PostMapping("express")
    public BaseRespVo updateExpressConfig(@RequestBody ExpressConfigVO ConfigVO){

        int result=systemConfigService.updateExpressConfig(ConfigVO);
        return BaseRespVo.ok();
    }

    @RequiresPermissions("admin:config:order:list")
    @RequestMapping("order")
    public BaseRespVo getOrderConfig(){

        OrderConfigVO configVO=systemConfigService.getOrderConfig();
        return BaseRespVo.ok(configVO);
    }

    @RequiresPermissions("admin:config:order:updateConfigs")
    @PostMapping("order")
    public BaseRespVo updateOrderConfig(@RequestBody OrderConfigVO ConfigVO){

        int result=systemConfigService.updateOrderConfig(ConfigVO);
        return BaseRespVo.ok();
    }

    @RequiresPermissions("admin:config:wx:list")
    @RequestMapping("wx")
    public BaseRespVo getWxConfig(){

        WxConfigVO configVO=systemConfigService.getWxConfig();
        return BaseRespVo.ok(configVO);
    }

    @RequiresPermissions("admin:config:wx:updateConfigs")
    @PostMapping("wx")
    public BaseRespVo updateWxConfig(@RequestBody WxConfigVO ConfigVO){

        int result=systemConfigService.updateWxConfig(ConfigVO);
        return BaseRespVo.ok();
    }
}
